package org.example.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenApiConfig {
    // 公共信息
    public static final String VERSION = "1.0.0";

    /**
     * 公共 OpenAPI 信息
     */
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("博客系统 API 文档")
                        .version(VERSION)
                        .description("统一的 API 接口文档，包含门户、管理中心和用户中心"));
    }

    /**
     * 前端门户 API 分组
     */
    @Bean
    public GroupedOpenApi portalApi() {
        return GroupedOpenApi.builder()
                .group("前端门户")                          // 分组名称
                .pathsToMatch("/portal/**")                 // 匹配路径前缀
                .packagesToScan("org.example.controller.portal") // 扫描包
                .build();
    }

    /**
     * 管理中心 API 分组
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("管理中心")
                .pathsToMatch("/admin/**")
                .packagesToScan("org.example.controller.admin")
                .build();
    }

    /**
     * 用户中心 API 分组
     */
    @Bean
    public GroupedOpenApi userCenterApi() {
        return GroupedOpenApi.builder()
                .group("用户中心")
                .pathsToMatch("/user/**")
                .packagesToScan("org.example.controller.user")
                .build();
    }
}
